
MWF.require("MWF.xDesktop.Widget", null, false);

MWF.xApplication.Common = MWF.xApplication.Common || {};
MWF.xApplication.Common.Widget = new Class({
    Extends: MWF.widget.Common,
    Implements: [Options, Events],

    options: {
        "style": "default",
        "appName": "Common",
        "name": "Widget",
        "width": "400",
        "height": "400",
        "position": { "right": 10, "bottom": 10 }
    },
    initialize: function (desktop, options) {
        this.setOptions(options);
        this.desktop = desktop;
        this.path = "../x_component_" + this.options.appName.replace(/\./g, "_") + "/$" + this.options.name.replace(/\./g, "/") + "/";
        this.cssPath = this.path + this.options.style + "/css.wcss";
        this._loadCss();
    },
    fireAppEvent: function (when) {
        this.fireEvent(when);
        if (this[("on-" + when).camelCase()]) this[("on-" + when).camelCase()]();
    },
    load: function (isCurrent) {
        this.fireAppEvent("queryLoad");
        this.loadWidget();
    },
    loadContent: function (callback) {
        if (callback) callback();
    },
    loadWidget: function () {
        this.fireAppEvent("queryLoadWidget");

        var options = {
            "title": this.options.title,
            "width": this.options.width,
            "height": this.options.height,
            "position": this.options.position,
            "onQueryClose": function () {
                this.fireAppEvent("rueryClose");
            }.bind(this),
            "onPostClose": function () {
                this.desktop.closeWidget(this);
                this.fireAppEvent("postClose");
            }.bind(this),
            "onScroll": function (y) {
                this.fireEvent("scroll", [y]);
            }.bind(this),
            "onOpen": function (e) {
                this.openApplication(e);
            }.bind(this),
            "onDragComplete": function (el, e) {
                this.fireEvent("dragComplete", [el, e]);
            }.bind(this)
        };
        this.widget = new MWF.xDesktop.Widget(this.desktop, options);
        this.fireAppEvent("loadWidget");
        this.widget.load();

        this.fireAppEvent("postLoadWidget");
        this.fireAppEvent("queryLoadContent");

        this.content = this.widget.contentNode;
        this.loadContent(function () {
            this.fireAppEvent("postLoadContent");
        }.bind(this));
        this.fireAppEvent("postLoad");

    },
    openApplication: function (e) {
        this.desktop.openApplication(e, this.options.appName);
    },

    //widget事件
    onQueryLoad: function () { },
    onQueryLoadWidget: function () { },
    onLoadWidget: function () { },
    onPostLoadWidget: function () { },
    onQueryLoadContent: function () { },
    onPostLoadContent: function () { },
    onPostLoad: function () { },
    onQueryClose: function () { },
    onPostClose: function () { }
});